package thinkingInJava;

/**
 * 
 */
/**
 * 
 */
public class Learn19 {

	public static void main(String[] args) {
		System.out.println(Good.A.toString().equals("A") + "\n");// true
		System.out.println(Good.A.getValue().equals("A"));// true
		System.out.println(Good.valueOf("A") == Good.A);// true 这个是编译器加上的
		System.out.println(Good.valueOf("C"));// 如果没有就会报错
		t1();

	}

	public static void t1() {
		for (Good g : Good.values()) { //values方法是编译器自动加上的
			System.out.println(g.ordinal() + "返回枚举的顺序");
			System.out.println(g.name().equals("A")
					+ "返回枚举的名字和toString()效果一样,返回枚举实例的名字");

		}
	}
	public static void t2(Good g){
		switch(g){
		case A:
			System.out.println(g.name());
			break;
		case B:
			System.out.println(g.name());
			break;
		default:
			System.out.println("not exist in enum Good");
		}
	}

}

enum Good {
	A("A"), B("B");
	private String value;

	private Good(String value) {
		// 如果里面有字符串,则构造方法是必须的,构造方法可以是public或者private,无所谓,因为反正是别人是不可用的
		this.value = value;
	}

	public String getValue() {
		// 获取对自身的描述
		return value;
	}

	@Override
	public String toString() {
		String name = name();
		name = this.getValue();
		name = super.toString();
		return name;
	}

}
